package com.twq.collection.framework.seq

/**
 * Created by tangweiqun on 2017/12/10.
 */
class StreamsTest {
  def main(args: Array[String]): Unit = {
    //1、Stream结构和List是一样的，但是它是延迟计算的，只有被访问到的元素才会计算
    // 所以呢Stream可以无限长，Stream的性能和List是一样的

    //2、List是用 :: 操作符来拼接元素，而Stream使用 #:: 来拼接元素
    val str = 1 #:: 2 #:: 3 #:: Stream.empty

    //3、例子：求斐波那契数列
    //如果将下面的 #:: 修改成 :: 将会导致死循环
    def fibFrom(a: Int, b: Int): Stream[Int] =
      a #:: fibFrom(b, a + b)

    val fibs = fibFrom(1, 1).take(7)
    fibs.foreach(println)
    fibs.toList

  }
}
